import { createWebHistory, createRouter } from 'vue-router';
import routes from './layout/index'
import { createDiscreteApi } from 'naive-ui'
const { loadingBar } = createDiscreteApi(['loadingBar'])
import { adminMenus } from "@/data/menu.ts";
import { useStore } from "vuex";
import cookies from '@/utils/cookieTool'

const TITLE_NAME = "Polaris - ";
const list404 = ['/404', '/4042', '/4043', '/4045']
const router = createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
  history: createWebHistory(),
  routes, // `routes: routes` 的缩写
  scrollBehavior(to, from, savedPosition) {
    // 始终回到顶部
    if (savedPosition) {
      return savedPosition;
    } else {
      return { top: 0 };
    }

  }
})

//前置路由守卫
router.beforeEach((to: any, from, next) => {
  if (to.path !== from.path) {
    // 路由跳转前，将滚动位置设置为顶部
    window.scrollTo(0, 0);
  }
  // 路由中导入-开始
  loadingBar.start()
  document.title = TITLE_NAME + to.meta.title;
  let timer: any;
  // document.addEventListener('visibilitychange', function () {
  //   // 用户息屏、或者切到后台运行 （离开页面） 
  //   if (document.visibilityState === 'hidden') {
  //     clearTimeout(timer)
  //     const arr: Array<string> = [
  //       'ヾ(￣▽￣)Bye~Bye~',
  //       '=͟͟͞͞(꒪⌓꒪*)你咋走了',
  //       '(；′⌒`)记得回来',
  //       '‎(,,•́ . •̀,,)记得回来',
  //       '‎(●︎˘͈ ᵕ˘͈)在等你哦',
  //       '(づ ●─● )づ你别走呀',
  //       '(ง •̀_•́)ง我在这里',
  //       '<(｀^´)快点回来',
  //     ]
  //     document.title = arr[Math.ceil(Math.random() * 7)]
  //   }
  //   // 用户打开或回到页面 
  //   if (document.visibilityState === 'visible') {
  //     clearTimeout(timer)
  //     const arr: Array<string> = [
  //       '⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄你回来辣',
  //       '(✿◡‿◡)你回来辣',
  //       '✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧你回来辣',
  //       '‎₍˄·͈༝·͈˄₎◞你回来辣',
  //       '(๑>؂<๑)你回来辣',
  //       '(づ ●─● )づ你回来辣',
  //       '(ง •̀_•́)ง你回来辣',
  //       'ᴗ͈ˬᴗ͈ෆ你回来辣',
  //       '꒰ᐢ⸝⸝•༝•⸝⸝ᐢ꒱你回来辣',
  //     ]
  //     document.title = arr[Math.ceil(Math.random() * 8)]
  //     timer = setTimeout(() => {
  //       document.title = to.meta.title
  //     }, 5000)
  //   }
  // })

  window.scrollTo({
    top: 0,
    behavior: 'smooth' // 可选的，使滚动平滑进行
  });
  if (to.path == "/login") {
    next();
  } else {
    //获取token 如果token过期或者没有token 跳转登录页面
    //判断是否有权限返回登录界面
    let token = cookies.getCookie('token')
    // window.$message.success(token)
    if (token != 'undefined' && token != null && token) {
      if (!router.hasRoute(to.name)) {
        next({ path: list404[Math.floor(Math.random() * 0)] });
      } else {
        next();
      }
    } else {
      next({ path: "/login" });
    }
  }


});

// 设置后置路由守卫
router.afterEach((to, from, next) => {
  // 路由中导入-结束
  loadingBar.finish()

  const store = useStore();
  let path = to.path;
  let index = 0;
  for (let i = 0; i < adminMenus.length; i++) {
    const element = adminMenus[i];
    for (let j = 0; j < element.children.length; j++) {
      let cKey = element.children[j].key;
      if (cKey == path) {
        index = i;
        break;
      }
    }
  }

  // setTimeout(() => {
  console.log(path)
  // window.$message.success(to.href);
  store.dispatch("updateMenuKeySaync", index);
  store.dispatch("updateChildrenKeySaync", path);
  // }, 1);

})


export { router };